﻿/**
 *
 * @file FITKAcousticsNCTResistive.h
 * @brief 多层声包子类、阻尼
 * @author liuzhiyuan(liuzhiyuan@diso.cn)
 * @date 2024-11-1
 *
 */
#ifndef FITKACOUSTICSNCTRESISTIVE_H
#define FITKACOUSTICSNCTRESISTIVE_H

#include "FITKAcousticsPhysicsAPI.h"
#include "FITKAcousticsNCTLayUp.h"

namespace Acoustics
{
    /**
     * @brief 多层声包阻尼
     * @author liuzhiyuan(liuzhiyuan@diso.cn)
     * @date 2024-11-1
     */
    class FITKAcousticsPhysicsAPI FITKAcousticsNCTResistive :public FITKAcousticsNCTAbstractLayObj
    {
    public:
        /**
         * @brief 构造函数
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-11-1
         */
        explicit FITKAcousticsNCTResistive() = default;
        /**
         * @brief 析构函数
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-11-1
         */
        virtual ~FITKAcousticsNCTResistive();
        /**
         * @brief 获取类型
         * @return double
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-11-1
         */
        NCTLayUpType getNCTLayUpType() override;
        /**
         * @brief 单位面积的质量
         * @return double
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-11-1
         */
        double getMassPerUnitArea() override;
        /**
         * @brief 密度
         * @return double
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-11-1
         */
        double getDensity();
        /**
         * @brief 设置密度
         * @param[i] density 密度
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-11-1
         */
        void setDensity(double density);

        /**
         * @brief 流阻率
         * @return double
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-11-1
         */
        double getFlowResistivity();
        /**
         * @brief 设置流阻率
         * @param[i] flowResistivity 流阻率
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-11-1
         */
        void setFlowResistivity(double flowResistivity);
        /**
       * @brief 复制数据对象,深拷贝，数据id不拷贝
       * @param[i] obj 被拷贝的对象
       * @return true
       * @return false
       * @author liuzhiyuan(liuzhiyuan@diso.cn)
       * @date 2024-11-10
       */
        virtual bool copy(FITKAbstractDataObject* obj) override;

    private:

        /**
         * @brief  密度
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date   2024-10-15
         */
        double _density{0.0};
        /**
         * @brief  流阻率
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date   2024-10-15
         */
        double _flowResistivity{0.0};
    };
}

#endif // FITKACOUSTICSNCTRESISTIVE_H
